package com.baizhi.feignclient;

import com.baizhi.entity.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

// 调用商品服务接口
@FeignClient("PRODUCT")
public interface ProductClient {

    // 调用商品服务
    @GetMapping("/product")
    String product();

    @GetMapping("/product/list")
    String list();

    // 声明调用接收零散类型参数接口   queryString
    @GetMapping("/product/test")
    String test(@RequestParam("name") String name, @RequestParam("age") Integer age);

    // 声明调用接收零散类型参数接口   路径传递参数
    @GetMapping("/product/test1/{id}/{name}")
    String test1(@PathVariable("id") Integer id, @PathVariable("name") String name);

    // 声明调用接收对象类型参数接口   表单方式
    @PostMapping("/product/test2")
    String test2(@SpringQueryMap Product product);

    // 声明调用接收对象类型参数接口   json方式
    @PostMapping("/product/test3")
    String test3(@RequestBody Product product);

    // 声明调用接收数组类型参数接口
    @GetMapping("/product/test4")
    String test4(@RequestParam("ids") String[] ids);

    // 声明调用接收集合类型参数接口
    @GetMapping("/product/test5")
    String test5(@RequestParam("ids") List<String> ids);

    // 声明调用根据id查询商品信息接口
    @GetMapping("/product/{id}")
    Product getProduct(@PathVariable("id") Integer id);

    // 声明调用根据类别id查询商品列表接口
    @GetMapping("/product/products")
    List<Product> findByCategoryId(@RequestParam("categoryId") Integer categoryId);

    // 声明调用根据类别id分页查询商品列表接口
    @GetMapping("/product/productPage")
    // Map<String, Object> findPageByCategoryId(@RequestParam("page") Integer page, @RequestParam("rows") Integer rows, @RequestParam("categoryId") Integer categoryId);
    String findPageByCategoryId(@RequestParam("page") Integer page, @RequestParam("rows") Integer rows, @RequestParam("categoryId") Integer categoryId);
}
